Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Programación dinámica (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com

13

Problema de la mochila 0/1
Igual que en el tema anterior, pero los objetos no se pueden fragmentar en trozos más pequeños.
Problema: Tenemos n objetos, cada uno con un peso (wi) y un beneficio (vi), y una mochila en la que podemos meter objetos, con una capacidad de peso máximo M. El objetivo es maximizar el beneficio de los objetos transportados, donde cada objeto se puede coger entero (xi=1) o nada (xi=0).

Definición de la ecuación recurrente:
Sea Mochila (i, m) el problema de la mochila, considerando sólo los i primeros objetos (de los n originales) con una capacidad de peso m. Supondremos que devuelve el valor de beneficio total: ? xa·va
a=1..i
Podemos definir el problema de forma recurrente, en función de que se use o no el objeto i.

Monografias.com

14

Problema de la mochila 0/1
Definición de la ecuación recurrente:
Si no se usa el objeto i: Mochila (i, m) = Mochila (i – 1, m)
Si se usa: Mochila (i, m) = vi + Mochila (i – 1, m – wi)
Valor óptimo:
Mochila (i, m) = max (Mochila (i-1, m), vi + Mochila (i-1, m – wi))

Casos base:
Si (i< 0) o (m< 0) entonces no hay solución: Mochila (i, m) = -?
En otro caso, si (i=0) ó (m=0) la solución es no incluir ningún objeto: Mochila (i, m) = 0

Definición de las tablas:
La solución del problema original será Mochila (n, M).
Por lo tanto necesitamos una tabla: V: array [0..n, 0..M] of integer.
V[i, j] = Beneficio máximo usando los i primeros objetos y peso j.

Monografias.com

15

Problema de la mochila 0/1
Forma de rellenar las tablas:
Inicializar los casos base.
Para todo i, desde 1 hasta n, y j desde 1 hasta M, aplicar la ecuación de recurrencia:
V[i, j] = max (V[i – 1, j] , V[i – 1, j – wi] + vi)
Si j es negativo, entonces V[i, j] = -?, y el máximo será el otro término.

Ejemplo. n= 3, M= 6, w= (2, 3, 4), v= (1, 2, 5)

Tiempo de ejecución: ?(nM).

Monografias.com

16

Problema de la mochila 0/1
Se puede tener una tabla auxiliar de 0/1 para almacenar las decisiones parciales y recomponer la solución, o
A partir de la tabla V obtener la solución (x1, x2, …, xn): partir de la posición V[n, M] y analizar las decisiones que se tomaron para cada objeto i.
Si (V[i, j] = V[i-1, j]) entonces la solución no usa el objeto i, xi= 0.
Si (V[i, j] = V[i-1, j-wi] + vi) entonces sí se usa el objeto i, xi= 1.
Si (V[i, j] = V[i-1, j-wi] + vi) y (V[i, j] = V[i-1, j]) entonces podemos usar el objeto i o no (existe más de una solución óptima).
Acabar cuando lleguemos a un i=0 ó j=0.

¿Cuál será el tiempo de recomponer la solución?

¿Se cumple el principio de optimalidad?

Monografias.com

17

Multiplicación encadenada de matrices
Supongamos que tenemos las matrices M1, M2, …, Mn, que queremos multiplicar:
M = M1 x M2 x … x Mn

Puesto que el producto es asociativo, habrá muchas formas de realizar las multiplicaciones. Cada colocación de los paréntesis indica un orden en el que se realizan las operaciones.
Según el orden de las multiplicaciones, el número de total de multiplicaciones escalares necesarias puede variar considerablemente.
Sea una matriz A de dimensión pxq y B de qxr, entonces el producto AxB requiere p·q·r multiplicaciones escalares (método clásico).

Monografias.com

18

Multiplicación encadenada de matrices
Ejemplo. Sean las matrices A, B, C y D, de dimensiones: A= 13×5, B= 5×89, C= 89×3 y D= 3×34. Podemos multiplicarlas de 5 formas:
((AB)C)D Requiere 10.582 = 13·5·89 + 13·89·3 + 13·3·34
(AB)(CD) " 54.201
(A(BC))D " 2.856 = 5·89·3 + 13·5·3 + 13·3·34
A((BC)D) " 4.055
A(B(CD)) " 26.418

Objetivo: obtener un orden de multiplicación que minimice el número de multiplicaciones escalares.
Solución sencilla: estimar el número de multiplicaciones necesarias para todas las ordenaciones posibles. Quedarse con la que tenga menor valor.
¿Cuál es el número de ordenaciones posibles, T(n)?

Monografias.com

19

Multiplicación encadenada de matrices
Si n=1 ó n=2, T(n) = 1.
Si n>2, entonces podemos realizar la primera multiplicación por n-1 sitios distintos: (M1M2 … Mi)(Mi+1Mi+2… Mn)

T(n) = ? T(i)·T(n-i)
i=1..n-1
El valor de T(n) está en ?(4n/n2)
Para cada ordenación necesita un tiempo de ?(n).
Esta solución requeriría un tiempo con una cota inferior de ?(4n/n).

Solución utilizando programación dinámica
Definimos NMulti (i, j): el número mínimo de productos escalares necesarios para realizar la multiplicación entre la matriz i y la j (con i ? j), es decir: Mi x Mi+1 x … x Mj

Suponemos que las dimensiones se almacenan en un array d[0..n], donde la matriz Mi será de dimensión d[i-1] x d[i].

Monografias.com

20

Multiplicación encadenada de matrices
Casos base:
Si i = j, entonces NMulti(i, j) = 0. No necesitamos realizar ninguna operación.
Si i = j-1, entonces NMulti(i, j) = d[i-1]·d[i]·d[i+1]. Sólo existe una forma de hacer el producto.

Ecuación de recurrencia:
Si no se da ninguno de los casos anteriores, entonces podemos hacer la primera multiplicación por una posición k, con i?k< j:
(Mi x … x Mk)x(Mk+1 x … X Mj)
El resultado será el valor mínimo:
NMulti(i, j) = min (NMulti(i, k) + NMulti(k+1, j) + d[i-1]·d[k]·d[j])
i?k< j

Tablas usadas por el algoritmo:
El resultado será NMulti(1, n).
Necesitamos una posición para cada i, j, con 1 ? i ? j ? n.

Monografias.com

21

Multiplicación encadenada de matrices
Tablas usadas por el algoritmo.
Sea M una matriz [1..n, 1..n] de enteros. El algoritmo usará la mitad de la matriz.
Forma de rellenar la tabla.
Inicializar la matriz. Para todo i, desde 1 hasta n. M[i, i] = 0
Aplicar la ecuación de recurrencia por diagonales.
M[i, j] = min (M[i, k] + M[k+1, j] + d[i-1]·d[k]·d[j])
i?k< j
Ejemplo. n= 4, d = (10, 20, 50, 1, 100)

Monografias.com

22

Multiplicación encadenada de matrices
¿Cuál es el orden de complejidad de este algoritmo?

En la posición M[1, n] tenemos almacenado el número mínimo de multiplicaciones escalares necesario (para la ordenación que es óptima). Necesitamos calcular cuál es esta ordenación óptima.
Usar una matriz auxiliar Mejork [1..n, 1..n] en la que se almacene el mejor valor de k encontrado en cada paso durante el cálculo de M (indica cuál fue el mínimo en cada celda).
En el ejemplo anterior.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter